PING(8) | System Manager's Manual | PING(8) |
NAZWA¶
ping
—
wysyła pakiety ICMP ECHO_REQUEST do hostów
sieciowych
SKŁADNIA¶
ping
[-dfnqrvR
]
[-c
liczba]
[-i
oczekiwanie]
[-l
preload]
[-p
wzorzec]
[-s
rozmiarpakietu]
Opcje zmienione:
-I <nazwa urządzenia> może zostać wykorzystane do
ustawienia interfejsu wyjściowego.
Nowe opcje:
-T [tylko ping]: opcja wysłania pieczątki czasowej IP.
-T tsonly --- tylko pieczątki czasowe
-T tsandaddr --- pieczątki i adresy
-T tsprespec host1 [host2 [host3 [host 4]]]
--- przejścia pieczątek czasowych
Udoskonalenia:
- rozumie komunikaty błędów icmp i prawidłowo na
nie odpowiada.
- sprawdza sumę icmp i reaguje prawidłowo na uszkodzone
pakiety.
- potrafi prawidłowo pingować loopback linuksowy.
itd.
OPIS¶
Ping
używa obowiązkowego
datagramu ICMP o nazwie ECHO_REQUEST, wywołującego ICMP
ECHO_RESPONSE od hosta lub bramki. Datagramy ECHO_REQUEST (``pingi'')
składają się z nagłówka IP oraz ICMP , za
którymi następuje “struct timeval” oraz
określona liczba bajtów wypełnienia, używanych
do wypełnienia pakietu. Opcje są następujące:
Inne opcje to:
-c
liczba- Zakończ po wysłaniu (i odebraniu) liczba pakietów ECHO_RESPONSE
-d
- Ustaw na używanym gnieździe opcję
SO_DEBUG
-f
- Produkuje pakiety tak szybko, jak powracają, lub 100 razy na
sekundę, zależnie od tego, czego jest więcej. Dla
każdego wysłanego ECHO_REQUEST drukowana jest kropka ``.'',
a dla każdego odebranego ECHO_REPLY drukowane jest backspace. Daje
to dynamiczny obraz zmian ilości opuszczonych pakietów.
Opcji tej może używać jedynie superużytkownik.
Może to być bardzo ciężkie w sieci i powinno być używane ostrożnie.
-i
oczekiwanie- Czekaj oczekiwanie sekund
między
wysłaniem kolejnych pakietów. Domyślnie czeka
się jedną sekundę. Opcja ta jest niekompatybilna z
opcją
-f
-l
preload- Jeśli podany jest preload, ping jak najszybciej wysyła tyle pakietów, po czym przechodzi do normalnego trybu działania. Opcji tej używać może jedynie superużytkownik.
-n
- Tylko wyjście numeryczne. Nie będą dokonywane próby odczytania nazw symbolicznych adresów hostów.
-p
wzorzec- Możesz podać do 16 bajtów wypełnienia
wysyłanego pakietu. Jest to przydatne do diagnozowania w sieci
problemów związanych z danymi. Np.
“
-p ff
” spowoduje wysyłanie pakietu wypełnionego jedynkami. -q
- Ciche wyjście. Poza liniami podsumowania na starcie/końcu nic nie jest wyświetlane.
-R
- Nagrywaj trasę. Zawiera w pakiecie ECHO_REQUEST opcję RECORD_ROUTE i wyświetla bufor trasy zwróconych pakietów. Zauważ, że nagłówek IP wystarcza jedynie na 9 takich tras. Wiele hostów ignoruje lub zarzuca tę opcję.
-r
- Pomiń normalne tabele trasowania i wysyłaj bezpośrednio do hosta w przyłączonej sieci. Jeśli host nie jest w sieci podłączonej bezpośrednio, zwracany jest błąd. Opcja ta może być używana do pingowania hosta lokalnego poprzez interfejs, przez który nie ma trasy (np. po jego porzuceniu przez routed(8)).
-s
rozmiarpakietu- Określa liczbę wysyłanych bajtów danych. Domyślną wartością jest 56, co tłumaczy się na 64 bajty ICMP po połączeniu z 8 bajtami nagłówka ICMP.
-v
- Wyjście gadatliwe. Odbierane pakiety ICMP inne niż ECHO_RESPONSE są listowane.
Przy używaniu pinga
do izolowania
błędów, należy go najpierw
zapuścić na hoście lokalnym, by sprawdzić czy
lokalny interfejs sieciowy jest włączony i czy działa.
Potem należy pingować coraz to dalsze hosty i bramki.
Obliczane są czasy podróży i statystyki utraty
pakietów. Jeśli odbierane są pakiety zduplikowane, nie
są one włączane do obliczeń strat
pakietów, choć ich czas podróży jest
używany do obliczania minimalnego/średniego/maksymalnego czasu
podróży. Po nadaniu (i odebraniu) określonej liczby
pakietów, lub po zakończeniu programu przez
SIGINT
, wyświetlane jest krótkie
podsumowanie.
Jeśli ping
nie odbierze
żadnych pakietów odpowiedzi, to zakończy
działanie z kodem wyjścia 1. W przypadku błędu
kod ten wynosi 2. W przeciwnym razie zwracane jest 0. Umożliwia to
używanie kodu wyjścia do sprawdzania czy hosty
żyją, czy gryzą ziemię.
Program ten jest przeznaczony do testowania sieci, pomiarów
i zarządzania. Z powodu obciążenia, jakie może
wywołać w sieci, niemądre jest używanie
pinga
podczas normalnych operacji ze
skryptów.
SZCZEGÓŁY PAKIETU ICMP¶
Nagłówek IP bez opcji ma 20 bajtów. Pakiet ICMP ECHO_REQUEST zawiera dodatkowych 8 bajtów nagłówka ICMP, za którymi następuje określona ilość danych. Gdy podany jest rozmiarpakietu, to określa on rozmiar dodatkowego bloków danych (domyślnie 56). Tak więc ilość danych znajdujących się wewnątrz pakietu ip typu ICMP ECHO_REPLY jest zawsze 8 bajtów większa niż żądana ilość danych (nagłówek ICMP ).
Jeśli rozmiar danych ma wielkość przynajmniej
8 bajtów, to ping
używa pierwszych 8
bajtów do włączania pieczątki czasowej,
której używa do obliczeń czasów
podróży. Jeśli podano mniej niż 8 bajtów
wypełnienia, nie są podawane czasy podróży.
ZDUPLIKOWANE I USZKODZONE PAKIETY¶
Ping
zgłasza pakiety uszkodzone i
zduplikowane. Pakiety zduplikowane nigdy nie powinny się
pojawiać i prawdopodobnie są powodowane przez
nieprawidłowe retransmisje poziomu połączenia
(link-level). Mogą się one pojawiać w wielu sytuacjach
i rzadko są dobrym znakiem, choć obecność
niskiej liczby duplikatów nie musi być zawsze powodem
alarmu.
Pakiety uszkodzone są oczywiście
poważną przyczyną alarmu i często
wskazują na uszkodzenie sprzętu na drodze pakietu
pinga
.
UŻYWANIE RÓŻNYCH WZORCÓW DANYCH¶
Poziom (inter)sieci nigdy nie powinien traktować pakietów odmiennie w zależności od danych zawartych w części danych. Niestety problemy zależne od danych czasem pojawiają się w sieciach i pozostają długo niezauważane. W wielu przypadkach konkretny wzorzec powodujący problemy jest czymś, co nie posiada wystarczającej liczby zmian, np. jest samymi jedynkami lub samymi zerami, lub wzorcem na samym krańcu, prawie wypełnionym zerami. Niekoniecznie jednak musi wystarczyć podanie wzorca z samymi zerami w linii poleceń, gdyż interesujący wzorzec jest na poziomie połączenia i związek między tym co wpiszesz i tym co transmituje kontroler może być złożony.
Znaczy to, że jeśli masz problem zależny od
danych, to będziesz potrzebować wielu testów do jego
izolacji. Jeśli masz szczęście, to może
znajdziesz plik, który nie może być przesłany
przez sieć lub który wymaga dużo więcej czasu do
przesłania niż inne podobnej długości pliki.
Możesz następnie taki plik przetestować w poszukiwaniu
powtarzalnych wzorców z użyciem opcji
-p
pinga
.
SZCZEGÓŁY TTL¶
Wartość TTL pakietu IP reprezentuje maksymalną liczbę routerów IP, którą pakiet może minąć nim zostanie wyrzucony. W obecnej sytuacji, można oczekiwać że każdy router internetowy zdekrementuje wartość TTL o jeden.
Specyfikacja TCP/IP określa, że pole TTL pakietu TCP powinno być ustawiane na 60, lecz wiele systemów używa mniejszych wartości (4.3 BSD używa 30, 4.2 używało 15).
Maksymalna możliwa wartość tego pola to 255 i większość systemów Unixowych ustawia wartość TTL pakietów ICMP ECHO_REQUEST na 255. Oto dlaczego możesz pingować pewne hosty, lecz nie możesz ich osiągnąć poprzez telnet(1) czy ftp(1).
W normalnym działaniu, ping drukuje wartości ttl odbieranych pakietów. Gdy system zdalny otrzymuje pakiet ping, może on zrobić jedną z trzech rzeczy z polem TTL:
- Nie zmienić go; jest to właściwość systemów Berkeley Unix przed wydaniem 4.3BSD-Tahoe. W tym wypadku wartość TTL odebranego pakietu wyniesie 255 minus liczba routerów na trasie podróży.
- Ustawić ją na 255: jest to
właściwość obecnego Berkeley Unix. W tym
wypadku wartość TTL odebranego pakietu wyniesie 255 minus
liczbę routerów na trasie od systemu
zdalnego do hosta
ping
ującego. - Ustawić na inną wartość. Niektóre maszyny używają dla pakietów ICMP tej samej wartości co dla pakietów TCP, np. 30 lub 60. Inni mogą używać jeszcze bardziej dzikich wartości.
BŁĘDY¶
Wiele hostów i bram ignoruje opcję RECORD_ROUTE.
Maksymalna długość nagłówka IP jest zbyt mała dla całkowitej użyteczności opcji w rodzaju RECORD_ROUTE. Jednak nie można z tym praktycznie nic zrobić.
Szybkie pingowanie (flood pinging) nie jest ogólnie zalecanie, a w szczególności pingowanie adresu rozgłoszeniowego.
ZOBACZ TAKŻE¶
HISTORIA¶
Komenda ping
pojawiła się w
4.3BSD.
January 7, 1999 | iputils-ss990107 |